Was ist der beste Weg, um mehrere Sprachen für die Schnittstelle in einer ASP.NET MVC-Anwendung zu unterstützen? Ich habe gesehen, dass Leute Ressourcendateien für andere Anwendungen verwenden. Ist das immer noch der beste Weg?
asp.net-mvc
internationalization
multilingual
Lance Fisher
quelle
quelle
Antworten:
Wenn Sie die Standardansichtsmodule verwenden, funktionieren lokale Ressourcen in den Ansichten. Wenn Sie jedoch Ressourcenzeichenfolgen innerhalb einer Controller-Aktion abrufen müssen, können Sie keine lokalen Ressourcen abrufen und müssen globale Ressourcen verwenden.
Dies ist sinnvoll, wenn Sie darüber nachdenken, da lokale Ressourcen lokal für eine Aspx-Seite sind und Sie im Controller noch nicht einmal Ihre Ansicht ausgewählt haben.
quelle
Ich fand diese Ressource sehr hilfreich
Es ist ein Wrapper um HttpContext.Current.GetGlobalResourceString und HttpContext.Current.GetLocalResourceString , mit dem Sie die Ressourcen wie folgt aufrufen können ...
// default global resource Html.Resource("GlobalResource, ResourceName") // global resource with optional arguments for formatting Html.Resource("GlobalResource, ResourceName", "foo", "bar") // default local resource Html.Resource("ResourceName") // local resource with optional arguments for formatting Html.Resource("ResourceName", "foo", "bar")
Das einzige Problem, das ich gefunden habe, ist, dass Controller keinen Zugriff auf lokale Ressourcenzeichenfolgen haben.
quelle
Ja, Ressourcen sind immer noch der beste Weg, um mehrere Sprachen in der .NET-Umgebung zu unterstützen. Weil sie leicht zu referenzieren und noch einfacher sind, neue Sprachen hinzuzufügen.
Site.resx Site.en.resx Site.en-US.resx Site.fr.resx etc...
Sie haben also Recht, die Ressourcendateien weiterhin zu verwenden.
quelle
Das Orchard-Projekt verwendet eine Verknüpfungsmethode namens "T", um alle In-Page-String-Übersetzungen durchzuführen. Sie sehen also Tags mit einem @T ("A String to Translate").
Ich möchte untersuchen, wie dies hinter den Kulissen umgesetzt wird, und es möglicherweise in zukünftigen Projekten verwenden. Der Kurzname hält den Code sauberer , da es verwendet wird , eine Menge .
Was mir an diesem Ansatz gefällt, ist, dass die ursprüngliche Zeichenfolge (in diesem Fall Englisch) im Code immer noch gut sichtbar ist und keine Suche in einem Ressourcen-Tool oder an einem anderen Ort erforderlich ist, um zu dekodieren, wie die tatsächliche Zeichenfolge hier aussehen soll.
Weitere Informationen finden Sie unter http://orchardproject.net .
quelle
Einige der anderen als Antwort genannten Lösungen funktionieren nicht für die veröffentlichte Version von MVC (sie funktionierten mit früheren Versionen von Alpha / Beta).
Hier ist ein guter Artikel, der eine Möglichkeit beschreibt, eine Lokalisierung zu implementieren, die stark typisiert ist und die Unit-Tests von Controllern und Ansichten nicht unterbricht: Lokalisierungshandbuch für MVC v1
quelle
Dies ist eine weitere Option, und Sie haben Zugriff auf die CurrentUICulture im Controller:
Überprüfen Sie MVC3-mehrsprachig
quelle