Как сохранить сеанс для локализации и глобализации? - PullRequest
1 голос
/ 11 апреля 2011

Я хотел бы знать, как сохранить сеанс или как заставить браузер запоминать, какой язык следует сохранять приложению при навигации и переходе от страницы к другой, если я вспомню переопределенный метод:

protected override void InitializeCulture()  
        {  
            base.InitializeCulture();  
            string cult = Request["lstLanguage"];  
            if (cult != null)  
            {  
                Culture = cult;  
                UICulture = cult;  
            }  
}  

я пробовал:

Session["cult"] = cult;

но это не работает Для получения дополнительной информации на домашней странице есть выпадающий список, в котором пользователь выбирает язык. что я должен делать ? спасибо

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Вам необходимо сохранить заданную пользователем культуру в сеансе при первом входе пользователя в систему. Затем вы можете использовать его в ваших методах InitializeCulture.

например. при входе

Session ["CurrentCulture"] = (Ваши пользователи выбрали культуру)

и в вашем переопределении для InitializeCulture вы получите:

Session [ "CurrentCulture"].

Вот пример одного из моих методов.

    /// <summary>
    /// Initializes culture for the page
    /// </summary>
    [VersionChange( "6.1.34.89", "24/12/2009", "Custom Cultures added" )]
    protected override void InitializeCulture()
    {
        try
        {
            CultureInfo oCultureInfo;

            try
            {
                oCultureInfo = CultureInfo.CreateSpecificCulture( this.CurrentCustomCulture );
            }
            catch ( ArgumentException )
            {
                //Get culture info based on Great Britain
                CultureInfo cultureInfo = new CultureInfo( "en-GB" );
                RegionInfo regionInfo = new RegionInfo( cultureInfo.Name );

                CultureAndRegionInfoBuilder cultureAndRegionInfoBuilder = new CultureAndRegionInfoBuilder( this.CurrentCustomCulture, CultureAndRegionModifiers.None );

                cultureAndRegionInfoBuilder.LoadDataFromCultureInfo( cultureInfo );
                cultureAndRegionInfoBuilder.LoadDataFromRegionInfo( regionInfo );

                // Custom Changes
                cultureAndRegionInfoBuilder.CultureEnglishName = this.CurrentCustomCulture;
                cultureAndRegionInfoBuilder.CultureNativeName = this.CurrentCustomCulture;

                cultureAndRegionInfoBuilder.Register();

                oCultureInfo = CultureInfo.GetCultureInfo( this.CurrentCustomCulture );
            }
            catch ( Exception )
            {
                throw;
            }

            Thread.CurrentThread.CurrentCulture = oCultureInfo;
            Thread.CurrentThread.CurrentUICulture = oCultureInfo;

            Page.Culture = oCultureInfo.Name;
            Page.UICulture = oCultureInfo.Name;

            base.InitializeCulture();
        }
        catch ( Exception )
        {
            throw;
        }
    }

This.CurrentCustomCulture - мое свойство сеанса

1 голос
/ 11 апреля 2011

Вы можете сохранить выбранную культуру в файле cookie.Таким образом, когда пользователь вернется на ваш сайт, культура будет «запомнена».

Использование сеанса будет означать, что пользователь должен продолжать выбирать культуру по возвращении - не хорошо.

Вы можете получить доступ к файлам cookie сайта с помощью объекта запроса:

Request.Cookies["culture"].Value = chosenCultureCode;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...