У меня есть сайт с тремя доменами .com, .de и .it
Каждый домен должен по умолчанию соответствовать местному языку / культуре страны.
Я создал базовую страницу и добавил 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 мог проверить, произошло ли нажатие кнопки, и если это так, пропустите процедуру?
Любой совет будет принята с благодарностью, спасибо.