改变整个.NET Compact Edition Windows Forms应用程序的当前文化。

7

我需要将应用程序的当前文化更改为th-TH。我尝试创建以下类型的对象,并打算将其分配给当前线程的CurrentCulture属性。

System.Threading.Thread.CurrentThread.CurrentCulture = 
    new System.Globalization.CultureInfo("en-US");

但是我使用的.NET Compact版没有可用的CurrentCulture属性在System.Threading.Thread.CurrentThread属性中。
有没有办法可以做到这一点?
编辑: 我可以更改移动设备的区域设置,然后运行应用程序时,我能够从正确的资源文件中获取正确的文本。
但是,当我使用安装程序安装应用程序时,我无法获得正确的资源文件。
这是我所做的。
1. 我创建了安装程序,并将本地化资源、主输出以及内容文件包括在文件系统目录中的应用程序文件夹中。 2. 然后我在调试模式下构建它,生成所需的Cab文件。 3. 我将文件传输到我的设备上,然后运行cab文件,它显示安装成功。 4. 当我运行应用程序时,它只显示英语语言的字符串,而不管设备上的区域设置如何(但是当我直接在Visual Studio中选择设备并部署应用程序时,在Debug模式下运行相同的应用程序时,它会显示来自语言资源的正确字符串)。
我还验证了所需文件夹(例如fr-CA、th-TH等)是否被创建在我的应用程序的.exe文件所在的同一目录中。
1个回答

1
根据MSDN的说法,这是不可能的。

您无法在设备上以编程方式设置当前区域性。它们由设备制造商设置,或者由设备用户手动配置,例如在运行Windows CE或Windows CE .NET的Pocket PC上使用区域设置时,当前区域设置是基于每个设备的。

然而,我在Code Project上找到了一篇文章,提出了解决此问题的方法。
基本上,作者创建了自己的ResourceManager和基本表单,这意味着这种解决方案可能不太容易应用于现有的紧凑框架应用程序。
根据您的应用程序复杂性,您可能需要考虑实现某种ResourceManager,或者使用来自Code Project文章的ResourceManager。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接