Erhalten Sie den Fehlerschlüsselnamen anstelle einer lokalisierten Nachricht in der API -AntwortC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Erhalten Sie den Fehlerschlüsselnamen anstelle einer lokalisierten Nachricht in der API -Antwort

Post by Anonymous »

Beispiel für Werte in errorMessages.resx < /p>
oder Beispiel in Text < /p>
Name: "orderisclosed"
Neutraler Wert: "Kann geschlossene Bestellung nicht bearbeiten." замовлеiges. " Stattdessen erhalte ich jedoch nur den Fehlerschlüssel in der Antwort, wie unten gezeigt: < /p>

Code: Select all

{
"Errors": [
"OrderIsClosed"
]
}
< /code>
Ich verwende ResourceManager, um lokalisierte Zeichenfolgen abzurufen und habe die Lokalisierung für die gewünschte Sprache konfiguriert. Beim Versuch, auf die lokalisierte Zeichenfolge zuzugreifen, enthält die Antwort jedoch nur die Fehlerschlüssel und nicht die tatsächliche Nachricht. />  Struktur meines Projekts < /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>
versucht, es mit diesem Code zu testen < /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}");
Und es funktioniert, aber ich habe keine Ahnung, warum es nicht mit regulärer Lösung funktioniert

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post