更改整个windows窗体应用程序的当前区域性.NET Compact Edition



我需要将应用程序的当前区域性更改为th。我已经尝试过这样做,以创建以下类型的对象,并打算将其分配给当前线程的CurrentCulture属性

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

但是。我正在使用的NET Compact版本在System.Threading.Thread.CurrentThread属性中没有可用的CurrentCulture属性。

我们有办法做到这一点吗?

编辑:我可以更改移动设备的"区域"设置,然后当我运行应用程序时,我可以从正确的资源文件中获得正确的文本。

但是,当使用安装项目安装应用程序时,我无法获得正确的资源

这就是我所做的。

  1. 我创建了安装项目,并将本地化资源、主输出以及内容文件包括在安装项目的文件系统目录中的应用程序文件夹中
  2. 然后,我在调试模式下构建了它,并生成了所需的Cab文件
  3. 我把文件转移到我的设备上,然后运行cab文件,它显示安装成功
  4. 当我运行应用程序时,无论设备上的区域设置如何,它都只以英语显示字符串(但当我在visual studio中直接选择设备并在其上部署应用程序,在调试模式下运行同一应用程序时会在应用程序中显示语言资源中的正确字符串)

我还验证了所需的文件夹,如fr CA、th th等,是在我的应用程序的.exe所在的同一目录中创建的

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

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

然而,我确实在代码项目上找到了一篇文章,该文章提出了这个问题的解决方案
基本上,作者创建了自己的ResourceManager和基本表单,这意味着这个解决方案可能不太容易应用于现有的紧凑框架应用程序。

根据应用程序的复杂性,您可能需要考虑自己实现某种ResourceManager,或者使用代码项目文章中的ResourceManager。

最新更新