2009-07-08 8 views
1

Ich arbeite an einer ASP-Webanwendung und eine der Anforderungen ist, dass der Benutzer in der Lage sein muss, die gewünschte Sprache auszuwählen. Ich verwende Resx-Dateien zum Speichern der Locals. Was meine Frage ist, muss ich die CurrentCulture des Threads ändern, wenn eine Seite geladen wird, oder gibt es eine Möglichkeit, sie automatisch zu behandeln, wenn ein angemeldeter Benutzer von einer Seite wechselt zum nächstenASP.NET-Lokalisierungen und benutzerdefinierte Sprache

Antwort

1

Ja, ich glaube, Sie müssen es jedes Mal einstellen.Und es noch schlimmer zu machen, müssen Sie durch Überschreiben der InitializeCulture Methode der Klasse Page Ich habe eine SitePage erstellt, die alle Seiten in meinem Projekt vererben statt Seite, dies zu tun

public class SitePage : Page 
{ 
    protected override void InitializeCulture() 
    { 
     base.InitializeCulture(); 

     // Set both the CurrentCulture (for currency, date, etc) conversion, and the CurrentUICulture for resource file lookup. 
     Thread.CurrentThread.CurrentCulture = whatever; 
     Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 
    } 

}

Weiterführende Literatur:. http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

+0

Wie wäre es mit Application_BeginRequest in der Global.asax, würde dies auch funktionieren, seit es aufgerufen wird, bevor alles andere aufgerufen – Superdumbell

+0

Ich öffnete nur die Page-Klasse in Reflektor und die InitializeCulture ist nur eine virtuelle Methode so gibt Ihnen nur einen Platz, um die Kultur einzurichten, so dass es in Application_BeginRequest funktionieren sollte. Wenn nicht, poste ich sonst – Superdumbell

+0

Ich weiß, dass es einen Grund gab, dass * ich * Application_BeginRequest nicht verwenden konnte, aber ich kann mich nicht erinnern, wenn es eine globale Beschränkung war. – Greg

Verwandte Themen