Frage

Ich bin am Anfang zu lokalisieren ASP.NET MVC-Anwendung.Die meisten der Zeichenfolgen definiert werden in Ressource-Dateien und abgerufen werden über Matt ' s Lokalisierung Helfer.Andere Zeichenfolgen müssen in einer Datenbank gespeichert werden.

Meine Frage: Muss ich das einstellen CurrentUICulture früh in der Anforderungspipeline und verwenden, die in der gesamten Anwendung, oder direkt verwenden Request.UserLanguages[0] wenn nötig?

Jetzt Ich denke, dass ich sollte CurrentUICulture in Application_BeginRequest.Die Implementierung würde so Aussehen:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var cultureName = HttpContext.Current.Request.UserLanguages[0];
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(cultureName);
}

Ist dies der beste Ort, um CurrentUICulture und ist Request.UserLanguages[0] der beste Ort, um diese info?


Update:

Ariel s post zeigt diese definiert werden können, ohne den code zu, mit web.config

<system.web>
  <!--If enableClientBasedCulture is true, ASP.NET can set the UI culture and culture for a Web page automatically, based on the values that are sent by a browser.-->
  <globalization enableClientBasedCulture="true" culture="auto:en-US" uiCulture="auto:en"/>
War es hilfreich?

Lösung

Hier ist ein Beispiel unter Verwendung eines Httpmodule:

http: //weblogs.manas .com.ar / smedina / 2008/12/17 / Internationalisierung-in-aspnet-mvc /

Weitere Möglichkeiten, eine Basis-Controller-Klasse erstellen und die Lokalisierung Logik dort umzusetzen. Oder eine Aktion Filterattribut verwenden, aber Sie werden sich erinnern müssen, um es auf jedem Controller hinzuzufügen, oder diesen Ansatz verbinden sich mit der Basis-Controller-Klasse.

Andere Tipps

Anfrage.UserLanguages[0] können nur einen Hinweis, in welcher Sprache der Benutzer sehen möchte.Die meisten Benutzer wissen nicht wo Sie zum ändern der browser-Sprache.

Ein weiterer Punkt:Dont sicher sein, dass Anforderung.UserLanguages[0], ist eine gültige Sprache.Es kann sogar null sein.(Nicht sicher, was bots haben es)

Sie haben in der Regel eine Sprachauswahl auf der Seite.Sobald ein Benutzer eine Sprache ausgewählt wird, wird es gespeichert in einem cookie, session-oder url.Ich mag die url, weil ich denke, es sieht gut aus.

Wenn ein Benutzer Ihre Seite, ohne eine Sprache, die auf Ihrer Seite haben, sollten Sie überprüfen, ob Request.UserLanguages[0] ist eine Sprache, die Sie unterstützen und set Thread.CurrentThread.CurrentUICulture.

Ich benutze einen filter, um festzulegen Thread.CurrentThread.CurrentUICulture.Das ist ok, solange keine anderen filter mit Gewinde.CurrentThread.CurrentUICulture.Andernfalls müssen Sie den richtigen Ausführung, um für Filter.

Ich benutze auch Matts Helfer und es funktionierte sehr gut, so weit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top