Локализованный сайт, 1 ошибка: событие обратной передачи не работает - PullRequest
0 голосов
/ 23 сентября 2011

Я почти закончил локализацию крупного сайта в ASP.NET. Я использую CurrentUICulture, чтобы влиять на мою локализацию. Все идет хорошо, за исключением ситуации, когда у меня событие обратной передачи.

Если я запускаю это событие обратной передачи, со страницы, на которой была изменена его культура, событие обратной передачи использует значение OLD CurrentUICulture . Это работает правильно, если я сначала посетил некоторые другие страницы на сайте.

Я использую правильно локализованную страницу для запуска этого события, поэтому я уверен, что локализация сработала.

Является ли событие обратной передачи в другом потоке? Я что-то пропустил? Я не могу опубликовать код из проекта. Единственный параметр, который я использую - это Thread.CurrentUICulture в статическом классе-обертке, чтобы установить и получить мою локализацию. Класс содержит только статические свойства.

РЕДАКТИРОВАТЬ: Мы устанавливаем currentUIculture в OnInit на странице загрузки. Мы поддерживаем культуру пользовательского интерфейса, устанавливая ее каждый раз с сессии.

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Вместо установки культуры в событии OnInit страницы переопределите событие InitializeCulture.

Вот пример в vb, но вы поняли идею.

Protected Overrides Sub InitializeCulture()
    Dim locale As String = Request.QueryString("lc")
    If locale IsNot Nothing AndAlso locale = "fr-ca" Then
        Me._LocaleID = 3084
    End If
    Dim culture As New System.Globalization.CultureInfo(Me._LocaleID)
    System.Threading.Thread.CurrentThread.CurrentCulture = culture
    System.Threading.Thread.CurrentThread.CurrentUICulture = culture
End Sub
0 голосов
/ 18 января 2012

Я только что понял, что не ответил на этот вопрос.

Оказывается, что обратная передача (которая, наконец, перенаправляет) в другой домен, заставляет сеанс исчезнуть (очевидно, в любом случае, безусловно, это полезно знать).

Мы использовали настройку домена httpCookie, чтобы всегда устанавливать все файлы cookie для основного домена, поэтому сеансы распределяются между различными поддоменами (en.website.com и nl.website.com).

...