2010-08-16 2 views
2

Я сделал переопределить InitializeCulture на базовой странице.Проблема с изменением культуры

Protected Overrides Sub InitializeCulture() 
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("Fa-IR") 
    Thread.CurrentThread.CurrentUICulture = New CultureInfo("Fa-IR") 
    MyBase.InitializeCulture() 
End Sub 

но все же моя культура - это английское объединенное государство. , а тексты еще английские и не являются персидскими.


Я хочу изменить его программно. У меня есть местные и глобальные ресурсы на английском и персидском языках. Я хочу переключиться между ними. Как я могу это исправить?

, когда я положил Защищенные переопределения Sub InitializeCulture() на главной странице он отлично работает! но еще, когда я помещаю его в basepage, нет. В чем проблема?

ответ

2

Я нашел необычным, что вы инициализируете метод базового класса с помощью последней строки. Моя первая ставка заключалась в том, что это переопределяет вашу инициализацию вашей культуры. Но я его протестировал - это не проблема. Ваш код должен работать в любом случае.

У вас нет другого места с инициализацией культуры в вашем коде? CurrentThread - глобальная переменная, и если вы измените ее где-нибудь еще (в веб-элементе управления? В слое данных?), Это повлияет на вашу страницу.

Вот мой пример кода, работающий на немецком/английском языках. Он должен работать и на персидском/английском языке.

Partial Public Class _Default 
    Inherits BasePage 
End Class 

Public Class BasePage 
    Inherits System.Web.UI.Page 

    Protected Overrides Sub InitializeCulture() 
     MyBase.InitializeCulture() 
     Dim cultureInfo = New CultureInfo("de-DE") 
     Thread.CurrentThread.CurrentCulture = cultureInfo 
     Thread.CurrentThread.CurrentUICulture = cultureInfo 
    End Sub 
End Class 
+0

спасибо. когда я положил Защищенные переопределения Sub InitializeCulture() на главной странице он отлично работает! но еще, когда я помещаю его в basepage, нет. В чем проблема? – Shahin

+1

Если он работает в одной ситуации, он должен работать в обеих ситуациях. Глупый вопрос: нет ли пустого InitializeCulture без инициализации базового класса в основном классе, если вы тестируете базовый класс? –

+0

Дорогой Дирк. No :( – Shahin

2

Если вы хотите, чтобы установить культуру для всего сайта ASP.NET, то вы можете сделать это в файле web.config:

<globalization uiCulture="Fa-IR" culture="Fa-IR" /> 

См Localization Made Easy статьи.

+0

спасибо. Но я хочу изменить его программно. У меня есть местные и глобальные ресурсы на английском и персидском языках. Я хочу переключиться между ними. – Shahin

Смежные вопросы