Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 具有方向感知的NETCF本地化_.net_Compact Framework_Localization - Fatal编程技术网

.net 具有方向感知的NETCF本地化

.net 具有方向感知的NETCF本地化,.net,compact-framework,localization,.net,Compact Framework,Localization,是否有人成功本地化了一个使用方向感知控件支持多分辨率的移动应用程序。CultureInfo需要在运行时可设置,而不是从系统中读取。不确定这是否受支持。请帮忙 Plamen我从未使用过您提到的控件,也不知道为什么您必须在运行时为这些控件设置CultureInfo。因此,我的回答是基于您的问题:如何在运行时设置CultureInfo。如果这不是你想要的,就不要理会我的回答 如果我们正在编写桌面应用程序,则可以使用以下方法更改CultureInfo: Thread.CurrentThread.Curr

是否有人成功本地化了一个使用方向感知控件支持多分辨率的移动应用程序。CultureInfo需要在运行时可设置,而不是从系统中读取。不确定这是否受支持。请帮忙


Plamen

我从未使用过您提到的控件,也不知道为什么您必须在运行时为这些控件设置CultureInfo。因此,我的回答是基于您的问题:如何在运行时设置CultureInfo。如果这不是你想要的,就不要理会我的回答

如果我们正在编写桌面应用程序,则可以使用以下方法更改CultureInfo:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US")
'en-US = American English
不幸的是,这在CF.NET中是不可能的

事实上,据我所知,没有官方或受支持的方式可以在运行时在CF.NET中更改设备的CultureInfo(和区域设置)。也许可以更改注册表中的区域设置,但这意味着必须重新启动设备

然而,在我的代码库中,我有一段代码片段,这段代码片段是我不久前发现的,并且我只在一个模拟器中进行了测试,它工作得非常好这被认为是一种“黑客行为”,可能有风险但在模拟器中测试时,我从未遇到任何问题。在VB.Net中:

'I declare the following statement

Dim myCIintl As New Globalization.CultureInfo("en-US") 'where en-US is for Ame-English

'Then I call the following sub

SetDefaultLocale(myCIintl)

'Here is the code of the sub

Public Shared Sub SetDefaultLocale(ByVal locale As System.Globalization.CultureInfo)
        If Nothing Is locale Then
            Throw New ArgumentNullException("locale")
        End If

        Dim fi As System.Reflection.FieldInfo = GetType(System.Globalization.CultureInfo).GetField _
        ("m_userDefaultCulture", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Static)
        If Nothing Is fi Then
            Throw New NotSupportedException("Setting locale is not supported in this version of the framework.")
        End If
        fi.SetValue(Nothing, locale)
End Sub
注意:请注意,如果私有变量m_userDefaultCulture将在未来版本中更改其名称,则上述代码可能会中断。此外,变量的名称在本地化版本的Windows Mobile中可能有另一个名称-可能在西班牙语版本中称为其他名称。我不知道,所以我想你们必须自己试试

除了上面提到的注意事项外,只要设备上存在您希望使用的区域设置,上述代码就应该有效(交叉手指)。要查看设备支持哪些区域设置,可以使用Ctacke显示的优秀代码

祝你好运