Получение ключа об ошибке вместо локализованного сообщения в ответе APIC#

Место общения программистов C#
Anonymous
 Получение ключа об ошибке вместо локализованного сообщения в ответе API

Сообщение Anonymous »

Пример значений в errormessages.resx < /p>
или пример в тексте < /p>
Имя: "orderiscloed"
Нейтральное значение: "Can Can 't Edit Closed Order. "
uk-ua:" nemoжna redaguwyti зakrite зmowlennan. Однако вместо этого я получаю только ключ ошибки в ответе, как показано ниже: < /p>

Код: Выделить всё

{
"Errors": [
"OrderIsClosed"
]
}
< /code>
Я использую Resourccemanager для извлечения локализованных строк и настроил локализацию для желаемого языка. Однако при попытке получить доступ к локализованной строке, ответ содержит только клавишу ошибки, а не фактическое сообщение. < /P>
Я правильно настроил файлы ресурсов (.resx), и они помещаются в правильную папку проекта с настройкой действий сборки в встроенный ресурс.
Структура моего проекта < /p>
Solution
├── Application
│   └── ErrorMessages
│   |   ├── ErrorMessages.resx
│   |   └── ErrorMessages.uk-UA.resx
|   └── OrderService
|
|
└── API
└── Program.cs
< /code>
program.cs
builder.Services.AddLocalization(options => options.ResourcesPath = "ErrorMessages");
builder.Services.AddSingleton(new ResourceManager("Application.ErrorMessages.ErrorMessages",
typeof(Program).GetTypeInfo().Assembly));

var supportedCultures = new[] { "en-US", "uk-UA" };
var localizationOptions = new RequestLocalizationOptions()
.SetDefaultCulture("en-US")
.AddSupportedCultures(supportedCultures)
.AddSupportedUICultures(supportedCultures);
app.UseRequestLocalization(localizationOptions);
< /code>
orderservice < /p>
if (order.IsClosed())
return ServiceResults.Failed(_localizer["OrderIsClosed"].Value);
< /code>
Попробуйте проверить его с помощью этого кода < /p>
var resourceManager = new ResourceManager("Application.ErrorMessages.ErrorMessages", Assembly.GetExecutingAssembly());
string localizedValue = resourceManager.GetString("OrderIsClosed", new CultureInfo("uk-UA"));
Console.WriteLine($"Direct ResourceManager lookup: {localizedValue}");
И это работает, но я понятия не имею, почему это не работает с обычным решением

Подробнее здесь: https://stackoverflow.com/questions/794 ... i-response

Вернуться в «C#»