改变文化的问题

时间:2010-08-16 08:30:10

标签: .net asp.net resources

我在基页中完成了Override InitializeCulture。

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

但我的文化仍然是英国联合国。 和文本是英语,不是波斯语。


我想以编程方式更改它。我有本地和全球英语和波斯语资源。我想在他们之间切换。 我该如何解决?

当我把Protected Overrides Sub InitializeCulture() 在主页面它很棒!但是,当我把它放在基页而不是。 有什么问题?

2 个答案:

答案 0 :(得分:2)

如果要为整个 ASP.NET站点设置文化,那么可以在web.config文件中执行此操作:

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

请参阅Localization Made Easy文章。

答案 1 :(得分: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