我需要将应用程序的当前区域性更改为 th-TH 我尝试这样做来创建以下类型的对象,并且我打算将其分配给当前线程的 CurrentCulture 属性
System.Threading.Thread.CurrentThread.CurrentCulture =
new System.Globalization.CultureInfo("en-US");
但是我使用的 .NET Compact 版本在 System.Threading.Thread.CurrentThread
属性中没有可用的 CurrentCulture 属性。
有什么办法可以做到这一点吗?
编辑: 我可以更改移动设备的区域设置,然后当我运行应用程序时,我可以从正确的资源文件中获取正确的文本。
但是使用安装项目安装应用程序时我无法获取正确的资源
这就是我所做的。
- 我创建了安装项目,并将本地化资源、主要输出以及内容文件添加到安装项目的文件系统目录中的应用程序文件夹中。
- 然后,我在 Debug模式下构建它并生成了所需的 Cab 文件。
- 我将文件传输到我的设备,然后运行 cab 文件,它显示安装成功。
- 当我运行应用程序时,它仅以英语显示字符串,无论设备上的区域设置如何(但是当我在调试中运行相同的应用程序时,应用程序中会显示语言资源中的正确字符串模式(直接在 Visual Studio 中选择设备并在其上部署应用程序)
我还验证了所需的文件夹(例如 fr-CA、th-TH 等)是在我的应用程序的 .exe 所在的同一目录中创建的
最佳答案
根据MSDN ,这是不可能的。
You cannot set current culture programmatically on a device. They are set by the device manufacturer or manually configurable by the device user, such as with Regional Settings on a Pocket PC running Windows CE or Windows CE .NET, current culture settings are on a per-device basis.
不过,我确实找到了一篇关于Code Project的文章提出了解决这个问题的方法。
基本上,作者创建了自己的 ResourceManager 和基本表单,这意味着该解决方案可能不太容易应用于现有的紧凑框架应用程序。
根据应用程序的复杂性,您可能需要考虑自己实现某种 ResourceManager,或者使用代码项目文章中的资源管理器。
关于.net - 更改整个 Windows 窗体应用程序的当前区域性 .NET Compact Edition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29645656/