Ich versuche eine ASP.NET Core-Anwendung zu erstellen, die in Englisch und Deutsch verfügbar sein sollte. Mein Problem ist IViewLocalizer
gibt immer den deutschen Text zurück, auch wenn die Kultur auf Englisch eingestellt ist. Wie bekomme ich den richtigen Text für die aktuelle Kultur?
Startup.cs
%Vor%HomeController.cs
%Vor%Index.cshtml
%Vor% Die Ressourcendatei befindet sich unter Resources\Views.Home.Index.de.resx
Erwartete Ausgabe:
%Vor%Seitenausgabe:
%Vor%Anforderungsheader:
%Vor% Ich hatte das gleiche Problem seit gestern.
Es sieht so aus, als ob der LocalizationProvider die richtige Kultur nicht festlegen kann.
Nachdem ein benutzerdefinierter LocalizationProvider implementiert wurde, funktioniert IViewLocalizer
perfekt für Views
und ViewComponents
.
Außerdem musste ich die Sprache folgendermaßen in die URL implementieren:
http://somedomain.com/<2-letter-iso-language-name>/controller/action
Folgendes habe ich getan:
Startup.cs
%Vor% In der Methode ConfigureServices
habe ich CultureToUrlActionFilter()
hinzugefügt. Es ruft den 2-Buchstaben-Sprachcode von der URL ab und setzt das korrekte CultureInfo
. Wenn die URL einen nicht zulässigen Kulturcode enthält, wird sie in die Standardkultur umgeleitet.
In der Configure-Methode habe ich den benutzerdefinierten Lokalisierungsanbieter eingerichtet und ihn als erstes in die Anbieterwarteschlange eingefügt:
%Vor% Wenn die URL nach dem Domainnamen keinen Kulturcode enthält, führe ich eine Umleitung zu http://somedomain/<2-letter-culture-code>
(zur Standardkultur) durch. Für URLs muss immer eine Kultur angegeben werden.
Routen:
%Vor%Ich umadressiere es in HomeController, Redirect Aktion
HomeController.cs
%Vor%UrlCultureProvider.cs
%Vor%CultureToUrlActionFilter.cs
%Vor%Die resx-Dateien befinden sich alle im selben Ordner %Code% usw.
Tags und Links c# localization asp.net-core asp.net-core-mvc