Ich versuche, eine mehrsprachige Navigation in einer MVC 5-Anwendung zu erstellen.Lokalisierung in MVC 5 - Wie kann ich mehrsprachigen Text in meiner Ansicht mit einer Ressourcendatei rendern?
Was ich getan habe:
- Set
System.Threading.Thread.CurrentThread.CurrentUICulture
entweder auf "en-US" oder "es-ES" auf Basis von Cookie-Wert (standardmäßig auf Englisch es sei denn Benutzer Spanisch wählt) Erstellt drei Ressourcendateien (dies ist das erste Mal, dass ich sie benutze, daher bin ich mir nicht sicher, ob ich das Konzept vollständig verstehe ...) Index.resx, Resouce.de-US.resx, Resouce.es-ES.resx. Jede Ressourcendatei befindet sich in einem Ordner namens App_GlobalResources -Ordner
Jeder RESX-Datei wurde eine Name/Wert-Kombination hinzugefügt, Home/Home für Index.resx und en-US.resx und Home/Casa for es-ES. resx
- Versucht mit
@Resources.Index.Home
in meiner Layout-Datei und dachte, dass, wenn der Wert vonCurrentUICulture
von en-US zu ES-ES und umgekehrt geändert wird, die Sprache basierend auf den Werten in meinen Ressourcen-Dateien ändern würde.
Könnte jemand bitte lassen Sie mich wissen, wie ich den spanischen Text bekommen kann, wenn der Wert CurrentUICulture
ist „es-ES“ und der englische Text, wenn es „en-US“?
EDIT
ich gesagt haben sollte - @Resources.Index.Home
hat den Text "Home" in der Navigation machen. Allerdings, wenn ich wechseln CurrentUICulture
zu "es-ES", es macht immer noch "Home", nicht "Casa"
EDIT 2
Hier ist, wie ich gesetzt CurrentUICulture
global.asax
public void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if (Request.Cookies["lang"] == null)
{
HttpCookie lang = new HttpCookie("lang");
lang.Value = "english";
lang.Expires = DateTime.Now.AddDays(30d);
Response.Cookies.Add(lang);
}
else if (Request.Cookies["lang"] != null)
{
if (Request.Cookies["lang"].Value != null && Request.Cookies["lang"].Value == "english")
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us");
}
else if (Request.Cookies["lang"].Value != null && Request.Cookies["lang"].Value == "spanish")
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-es");
}
}
}
Es sollte funktionieren, haben Sie irgendeine Fehlermeldung? Kannst du wie dein Controller posten, der deine CurrentUICulture initialisiert? Was hast du in @ Resources.Index.Home? Zeigt es etwas? – Yanga
Danke - guter Punkt - es gibt keinen Fehler. Bitte sehen Sie mein Update. '@ Ressourcen.Index.Home "gibt den Text" Home "wieder, ändert sich jedoch nicht in" Casa ", wenn" CurrentUICulture "auf" es-ES "gesetzt ist – tradez
Können Sie den Code, in dem Sie Ihre CurrentUICulture – Yanga