Локализованный сайт, 1 ошибка: событие обратной передачи не работает

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

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

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

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

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

2 ответа

Решение

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

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

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

Вместо установки культуры в событии 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
Другие вопросы по тегам