2010-08-16 22 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初始化文化() 在主頁上它很好!但是,當我把它放在basepage中的時候。 有什麼問題?

回答

2

我發現用最後一行初始化基類方法的情況並不常見。我的第一個賭注是,這覆蓋了你的文化初始化。但我測試了它 - 這不是問題。無論如何,你的代碼應該工作。

你確定在你的代碼中沒有其他地方有文化初始化嗎? CurrentThread是一個全局變量,如果你改變它在其他地方(在數據層的Web控制?),這會影響你的頁面。

這是我的示例代碼,爲德語/英語工作。它也應該爲波斯/英語工作。

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 2010-08-16 16:01:30

+1

如果它在一種情況下工作,它應該在兩種情況下工作。愚蠢的問題:如果你測試基類,沒有在主類中沒有基類初始化的空InitializeCulture? – 2010-08-17 04:13:17

+0

親愛的德克。 否:(。 – Shahin 2010-08-17 04:16:33

2

如果你想設置的培養你的整個 ASP.NET網站,那麼你可以做的是,在web.config文件:

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

Localization Made Easy文章。

+0

謝謝。 但我想以編程方式更改它。 我擁有當地和全球的英語和波斯語資源。 我想在它們之間切換。 – Shahin 2010-08-16 08:40:38