IViewLocalizer gibt die falsche Sprache zurück

8

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%     
Christian Held 01.07.2016, 13:45
quelle

2 Antworten

0

Wenn jemand dieses Problem mit ASP.NET Core 1.1 oder neuer hat, versuchen Sie <NeutralLanguage>YOUR_DEFAULT_LANGUAGE</NeutralLanguage> zu Ihrem .csproj wie folgt hinzuzufügen:

%Vor%

Es hat mein Problem gelöst und es funktioniert jetzt korrekt.

    
moritzg 08.05.2017, 08:44
quelle
4

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.

%Vor%

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.

    
Victor Papp 03.07.2016 20:29
quelle