или пример в тексте < /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