Ereignisse
Power BI DataViz Weltmeisterschaften
14. Feb., 16 Uhr - 31. März, 16 Uhr
Mit 4 Chancen, ein Konferenzpaket zu gewinnen und es zum LIVE Grand Finale in Las Vegas zu machen
Weitere InformationenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
Von Hisham Bin Ateya
Dieser Artikel enthält Anweisungen für die Diagnose von Problemen mit der Lokalisierung von ASP.NET Core-Apps.
Reihenfolge der Lokalisierungsmiddleware
Die App kann möglicherweise nicht lokalisiert werden, da die Lokalisierungsmiddleware nicht in der erwarteten Reihenfolge angeordnet ist.
Um dieses Problem zu beheben, stellen Sie sicher, dass die Lokalisierungsmiddleware vor der MVC-Middleware registriert wurde. Andernfalls wird die Lokalisierungsmiddleware nicht angewendet.
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc();
}
Pfad der Lokalisierungsmiddleware nicht gefunden
Unterstützte Kulturen im RequestCultureProvider entsprechen nicht der einmaligen Registrierung
ASP.NET Core verfügt über vordefinierte Regeln und Richtlinien für die Benennung von Lokalisierungsressourcendateien, die unter Globalisierung und Lokalisierung in ASP.NET Core beschrieben werden.
Häufige Ursachen, warum Ressourcen nicht gefundenen werden, sind:
.resx
) oder in der Lokalisierungsanforderung falsch geschrieben.Debug
-Protokollebene) auf weitere Informationen zu den fehlenden Ressourcen.Tipp
Vergewissern Sie sich bei Verwendung von CookieRequestCultureProvider, dass für die Kulturen im Lokalisierungswert cookie keine einfachen Anführungszeichen verwendet werden. c='en-UK'|uic='en-US'
ist beispielsweise ein ungültiger cookie-Wert, c=en-UK|uic=en-US
hingegen ist gültig.
ASP.NET Core stellt standardmäßig eine Methode zur Verfügung, Klassenbibliotheken zu ermöglichen, ihre Ressourcendateien über ResourceLocationAttribute zu finden.
Folgende Probleme mit Klassenbibliotheken treten häufig auf:
Die RequestLocalizationOptions-Klasse verfügt über drei Standardanbieter:
Mit CustomRequestCultureProvider können Sie anpassen, wie die Lokalisierungskultur bereitgestellt wird. CustomRequestCultureProvider wird verwendet, wenn die Standardanbieter Ihren Anforderungen nicht entsprechen.
Ein häufiger Grund dafür, dass ein benutzerdefinierter Anbieter nicht ordnungsgemäß funktioniert, besteht darin, dass er nicht der erste Anbieter in der RequestCultureProviders-Liste ist. So beheben Sie dieses Problem:
Fügen Sie den benutzerdefinierten Anbieter an Position 0 in die RequestCultureProviders-Liste ein:
options.AddInitialRequestCultureProvider(
new CustomRequestCultureProvider(async context =>
{
// My custom request culture logic
return new ProviderCultureResult("en");
}));
Fügen Sie den benutzerdefinierten Anbieter an Position 0 in die RequestCultureProviders-Liste ein:
options.RequestCultureProviders.Insert(0,
new CustomRequestCultureProvider(async context =>
{
// My custom request culture logic
return new ProviderCultureResult("en");
}));
Wenn der Stammnamespace einer Assembly sich vom Assemblynamen unterscheidet, funktioniert die Lokalisierung standardmäßig nicht. Um solche Probleme zu vermeiden, verwenden Sie das RootNamespace
-Attribut, das unter Globalisierung und Lokalisierung in ASP.NET Core beschrieben wird.
Warnung
Ein Problem mit dem Stammnamespace kann auftreten, wenn der Name eines Projekts kein gültiger .NET-Bezeichner ist. Beispielsweise verwendet my-project-name.csproj
den Stammnamespace „my_project_name
“ und den Assemblynamen „my-project-name
“, was zu diesem Fehler führt.
Wenn Sie Ressourcendateien für die Lokalisierung verwenden, ist es wichtig, dass sie über eine geeignete Buildaktion verfügen. Verwenden Sie Eingebettete Ressource. Andernfalls kann ResourceStringLocalizer
diese Ressourcen nicht finden.
Wenn Sie die Standortüberschreibung mithilfe des Bereichs Sensoren in den Entwicklertools von Google Chrome oder Microsoft Edge verwenden, wird die Fallbacksprache nach dem Vorabrendering zurückgesetzt. Vermeiden Sie das Festlegen der Sprache mithilfe des Bereichs Sensoren beim Testen. Legen Sie die Sprache mithilfe der Spracheinstellungen des Browsers fest.
Weitere Informationen finden Sie unter Blazor-Lokalisierung funktioniert nicht mit InteractiveServer (dotnet/aspnetcore
#53707).
Feedback zu ASP.NET Core
ASP.NET Core ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
Power BI DataViz Weltmeisterschaften
14. Feb., 16 Uhr - 31. März, 16 Uhr
Mit 4 Chancen, ein Konferenzpaket zu gewinnen und es zum LIVE Grand Finale in Las Vegas zu machen
Weitere InformationenTraining
Modul
Erstellen barrierefreier Web-Apps unter Verwendung von ASP.NET Core - Training
Diagnostizieren Sie häufige Probleme mit der Webbarrierefreiheit in einer ASP.NET Core-Anwendung, und beheben Sie sie.
Dokumentation
Den Inhalt einer ASP.NET Core-App lokalisierbar machen
Erfahren Sie, wie Sie den Inhalt einer ASP.NET Core-App lokalisierbar machen, um die App für die Lokalisierung von Inhalten in verschiedenen Sprachen und Kulturen vorzubereiten.
Globalisierung und Lokalisierung in ASP.NET Core
Erfahren Sie, wie ASP.NET Core Dienste und Middleware für das Lokalisieren von Inhalten in verschiedene Sprachen und Kulturen anbietet.
Konfigurieren der Lokalisierung portabler Objekte in ASP.NET Core
Dieser Artikel führt portable Objektdateien ein und erläutert die Schritte zu ihrer Verwendung in einer ASP.NET Core-Anwendung mit dem Framework Orchard Core.