Ich habe ein Projekt von .Net Core 2.2 auf .Net Core 3.0 aktualisiert.
Nachdem ich versucht habe, alle Warnungen und Fehler zu beheben, versuche ich nun, eine Lösung für diese Warnung zu finden:
'IStringLocalizer.WithCulture(CultureInfo)' is obsolete: 'This method is obsolete.
Use `CurrentCulture` and `CurrentUICulture` instead.'
Ich verwende dies, um die Sprache der Website für den angemeldeten Benutzer zu ändern. Ich habe diese Implementierung, um die Website-Kultur pro Benutzer zu ändern:
public class CultureLocalizer : ICultureLocalizer
{
private readonly IStringLocalizer localizer;
public CultureLocalizer(IStringLocalizerFactory factory)
{
var type = typeof(Resources.PageResources);
var assemblyName = new AssemblyName(type.GetTypeInfo().Assembly.FullName);
localizer = factory.Create("PageResources", assemblyName.Name);
}
// if we have formatted string we can provide arguments
// e.g.: @Localizer.Text("Hello {0}", User.Name)
public LocalizedString Get(string key, params string[] arguments)
{
return arguments == null ? localizer[key] : localizer[key, arguments];
}
public LocalizedString Get(Enum key, params string[] arguments)
{
return arguments == null ? localizer[key.ToString()] : localizer[key.ToString(), arguments];
}
public LocalizedString Get(CultureInfo culture, string key, params string[] arguments)
{
// This is obsolete
return arguments == null ? localizer.WithCulture(culture)[key] : localizer.WithCulture(culture)[key, arguments];
}
public LocalizedString Get(CultureInfo culture, Enum key, params string[] arguments)
{
// This is obsolete
return arguments == null ? localizer.WithCulture(culture)[key.ToString()] : localizer.WithCulture(culture)[key.ToString(), arguments];
}
}
Und dies ist die Dummy-Klasse, die nur die .resx
Datei für die Übersetzungen enthält:
// dummy class for grouping localization resources
public class PageResources
{
}
Ich konnte im Web nichts finden, was darauf hinweist, wie diese Warnung gelöst werden kann, außer dieser Diskussion über Github , die anscheinend noch keine Lösung hat.
War noch jemand auf diese Warnung gestoßen und hatte eine Lösung dafür gefunden?
quelle
CurrentUICulture
daCurrentCulture
es keine Auswirkungen auf zu haben scheintStringLocalizer
. Bei Verwendung in einer Web-App können Sie dasservices.Configure<RequestLocalizationOptions>
Verhalten zum Erkennen der Anforderungssprache des aktuellen Benutzers anpassen. Beachten Sie jedoch die Microsoft-Standardeinstellungen - Header, Cookies usw. - für die automatische Spracherkennung. Aus diesem Grund ziehe ich es vorRequestCultureProviders
, mich an meinen bekannten Mechanismus zur Erkennung der Benutzersprache anzupassen .