.net - 文化变化带来的问题

标签 .net asp.net resources

我在基页中覆盖了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() 时 在主页上效果很好!但当我把它放在基页中时则不然。 有什么问题吗?

最佳答案

我发现用最后一行初始化基类方法并不常见。我的第一个赌注是,这会覆盖你的文化初始化。但我测试过 - 这不是问题。无论如何,您的代码应该可以工作。

您确定您的代码中没有其他地方具有区域性初始化吗? 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

关于.net - 文化变化带来的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3491607/

相关文章:

asp.net - 在 Web 应用程序之间共享 asp.net 资源文件

.net - 如何最好地使用文件版本和程序集版本?

c# - 'File.Copy' 不会覆盖文件

asp.net - 获取Gridview中隐藏列的值

jquery - 菜单悬停效果在 IE 中不起作用

c# - xamarin android 应用程序 : how to get the Resources folder of my project

c# - 序列化包含 StateServer 的 linq2sql 对象的对象

c# - 如何为所有 IEnumerable<Int32> 覆盖 ToString() 方法?

file - 无法访问 bundle 资源/文件 (OSGi)

java - 以编程方式从 jar 中查找具有特定扩展名的所有资源