是否可以在运行时设置Windows程序的语言或区域设置?

问题描述 投票:0回答:2

我们有一些现有的软件(C++ Windows 应用程序),它们的资源已被翻译成多种语言供不同的客户使用。应用程序从 Windows 区域设置中获取区域设置并以适当的语言运行。

根据最近的订单,我们将资源翻译成德语,但我们刚刚发现客户正在安装英语的 Windows,但希望我们的软件仍以德语运行。显然PC上运行的其余软件还没有全球化,而且只是德语。

Windows 中是否有任何方法可以覆盖区域设置,以便软件认为它在德语安装的 Windows 上运行?我们现在没有时间对软件进行更改以覆盖区域设置,而且无论如何也不愿意为这个客户分叉应用程序。

有什么建议吗?

windows runtime locale
2个回答
6
投票

我不知道任何不涉及更改程序的直接方法,但我可以提供以下解决方法。

在运行应用程序的计算机上:

  1. 创建另一个用户
  2. 将该用户的区域设置设置为德语
  3. 然后,让您的程序使用该用户的凭据运行(使用 runas 或
    psexec
    )。

程序将以德语语言环境运行,而用户将继续在英语环境中工作。

缺点

不过,如果用户尝试保存或打开文件,这会很烦人 - 桌面和文档文件夹将是德语用户的,而不是英语用户的。


0
投票

是的,您可以使用 WinMain 中的 win32 调用 SetThreadLocale 或应用程序的任何入口点。 任何子线程都将继承父区域设置。 详情请看这里:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd374051%28v=vs.85%29.aspx

© www.soinside.com 2019 - 2024. All rights reserved.