internationalization - Mehrere Sprachen in einer ASP.NET MVC-Anwendung?

Translate

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?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Wenn Sie die Standard-Ansichtsmodule 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
Translate

ich fanddiese Ressourcesehr hilfreich sein

Es ist eine Hülle um dieHttpContext.Current.GetGlobalResourceStringundHttpContext.Current.GetLocalResourceStringDamit können Sie die Ressourcen wie folgt aufrufen ...

// 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
Translate

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
Translate

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 er verwendet wirdviel.

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.

Sehenhttp://orchardproject.netFür mehr Information.

Quelle
ADB
Translate

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
Translate

Dies ist eine weitere Option, und Sie haben Zugriff auf die CurrentUICulture im Controller:

PrüfenMVC3-mehrsprachig

Quelle