我有一个网站有三个域.com,.de和.itASP.NET设置文化与InitializeCulture
每个域需要默认为本国语言/文化。 我创建了一个基本页面,并增加了InitializeCulture
Protected Overrides Sub InitializeCulture()
Dim url As System.Uri = Request.Url
Dim hostname As String = url.Host.ToString()
Dim SelectedLanguage As String
If HttpContext.Current.Profile("PreferredCulture").ToString Is Nothing Then
Select Case hostname
Case "www.domain.de"
SelectedLanguage = "de"
Thread.CurrentThread.CurrentUICulture = New CultureInfo(SelectedLanguage)
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(SelectedLanguage)
Case "www.domain.it"
SelectedLanguage = "it"
Thread.CurrentThread.CurrentUICulture = New CultureInfo(SelectedLanguage)
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(SelectedLanguage)
Case Else
SelectedLanguage = "en"
Thread.CurrentThread.CurrentUICulture = New CultureInfo(SelectedLanguage)
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(SelectedLanguage)
End Select
End If
End Sub
这是好的。现在出现了这个问题,因为我们还希望主页上有三个语言选择按钮,以便用户可以覆盖域语言。
所以我Default.asp.vb我们有三个按钮,这样的活动......
Protected Sub langEnglish_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles langEnglish.Click
Dim SelectedLanguage As String = "en"
'Save selected user language in profile'
HttpContext.Current.Profile.SetPropertyValue("PreferredCulture", SelectedLanguage)
'Force re-initialization of the page to fire InitializeCulture()'
Context.Server.Transfer(Context.Request.Path)
End Sub
但当然InititalizeCulture然后将覆盖任何按钮已经做出选择。 InitialCulture是否有任何方法可以检查是否发生了按钮单击,如果是这样,则跳过该例程?
任何意见将不胜感激,谢谢。
完美的,这样一个干净的解决方案。谢谢。 – Helen 2010-03-09 20:19:38