更改整个Windows窗体应用程序.NET Compact Edition的当前文化

时间:2015-04-15 08:47:24

标签: .net compact-framework setup-project cultureinfo

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

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

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

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

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

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

这就是我所做的。

  1. I创建了安装项目,我将本地化资源,主要输出以及内容文件包含在安装项目的文件系统目录中的Application文件夹中。
  2. 然后我在调试模式下构建它并生成了必需的Cab文件。
  3. 我将文件传输到我的设备,然后运行cab文件,它说安装成功。
  4. 当我运行应用程序时,它只显示英文字符串,而不管设备上的区域设置(但是当我在Debug中运行相同的应用程序时,语言资源中的正确字符串会显示在应用程序中模式,直接在visual studio中选择设备并在其上部署应用程序)
  5. 我还验证了在我的应用程序的.exe存在的同一目录中创建了所需的文件夹,例如fr-CA,th-TH等

1 个答案:

答案 0 :(得分:1)

根据MSDN,这是不可能的。

  

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

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

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