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

  • Wie können mehrere Sprachen für die Schnittstelle in einer ASP.NET-MVC-Anwendung am besten unterstützt werden? Ich habe gesehen, dass Leute Ressourcendateien für andere Anwendungen verwenden. Ist dies immer noch der beste Weg?

    22 September 2012
    Erik Funkenbusch
6 answers
  • Wenn Sie die Standard-View-Engines verwenden, funktionieren lokale Ressourcen in den Ansichten. Wenn Sie jedoch Ressourcenstrings innerhalb einer Controller-Aktion abrufen müssen, können Sie keine lokalen Ressourcen erhalten und müssen globale Ressourcen verwenden.

    Dies ist sinnvoll, wenn Sie darüber nachdenken Da lokale Ressourcen für eine Aspx-Seite und im Controller lokal sind, haben Sie Ihre Ansicht noch nicht einmal ausgewählt.

    07 August 2008
    Ilmari Karonen
  • Ich habe diese Ressource gefunden Sehr hilfreich zu sein

    Es ist ein Wrapper um den HttpContext.Current.GetGlobalResourceString und HttpContext.Current.GetLocalResourceString Damit 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, sind Controller haben keinen Zugriff auf lokale Ressourcenzeichenfolgen.

    18 April 2017
    buræqueteuser710818
  • Ja Ressourcen sind immer noch der beste Weg, um mehrere Sprachen in der .NET-Umgebung zu unterstützen. Weil sie leicht zu referenzieren sind und noch einfacher neue Sprachen hinzufügen können.

     Site.resx
    Site.en.resx
    Site.en-US.resx
    Site.fr.resx
    etc...
     

    Sie haben also noch Recht Ressourcendateien.

    07 August 2008
    Nick Berardi
  • Das Orchard-Projekt verwendet eine Shortcut-Methode namens "T", um alle In-Page-String-Übersetzungen auszuführen. Sie sehen also Tags mit einem @T ("A String to Translate").

    Ich möchte untersuchen, wie dies im Hintergrund implementiert wird, und es möglicherweise in zukünftigen Projekten verwenden. Der Kurzname hält den Code sauberer, da er häufig verwendet wird .

    Was mir an diesem Ansatz gefällt, ist, dass die ursprüngliche Zeichenfolge (in diesem Fall Englisch) immer noch leicht im Code sichtbar ist und keine Suche in einem Ressourcenwerkzeug oder einem anderen Tool erfordert Speicherort, um zu dekodieren, was der eigentliche String hier sein soll.

    Weitere Informationen finden Sie unter http://orchardproject.net .

    13 April 2011
    Brady Moritz
  • Einige der anderen als Antwort genannten Lösungen funktionieren für die freigegebene Version von MVC nicht (sie funktionierten mit früheren Versionen von Alpha / Beta).

    Hier ist ein guter Artikel, der eine Methode zum Implementieren der Lokalisierung beschreibt, die stark typisiert ist und die Unit-Tests von Controllern und Ansichten nicht beeinträchtigt: Lokalisierungshandbuch für MVC v1

    09 October 2009
    ADB
  • Dies ist eine weitere Option, und Sie haben Zugriff auf CurrentUICulture im Controller:

    Überprüfen Sie MVC3-mehrsprachig

    29 April 2014
    Rahul Patelfabrice truillot de chambrier