1

环境 - C#、.NET 4.0、WPF、VS2010

我有一个支持多种文化/语言的简单 Windows 应用程序。当用户选择日文、韩文、中文(简体)或中文(繁体)时,Windows XP 将显示有趣的“方形”或“块”字符来代替字形。在 Windows Vista、7 或 8 上不会出现此问题。

作为解决方案,我被建议转到“控制面板|区域和语言选项”,选择“语言”选项卡,然后选中“为东亚语言安装文件”复选框。

这确实解决了问题……对于我的机器。现在我知道选择“日语”的日本用户很可能已经安装了必要的资源,他们很可能不会遇到这个问题。

但是...我需要能够检测东亚语言是否已安装在运行我的应用程序的任何 Windows XP 机器上。在这种情况下,我将能够显示一个消息框,通知他们安装语言……或者我可能决定隐藏日语、韩语、中文(简体)和中文(繁体)文化/语言选择。

那么...如何检测 Windows XP 是否安装了必要的东亚语言文件?我更喜欢 .NET 解决方案,但我愿意在必要时进行 API 调用。

J.P

4

3 回答 3

1

而不是检查InputLanguage,您应该CultureInfo使用GetCultures函数调用进行检查,

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.getcultures.aspx

如文档所述,如果InstalledWin32Cultures用作参数,则此函数应返回您想要的,

http://msdn.microsoft.com/en-us/library/system.globalization.culturetypes.aspx

于 2012-05-20T01:27:53.720 回答
0

你可以这样迭代:

        foreach (System.Windows.Forms.InputLanguage p in System.Windows.Forms.InputLanguage.InstalledInputLanguages)
            Console.WriteLine(p.Culture.EnglishName);

它将显示您要查找的内容。

于 2012-05-19T21:48:19.340 回答
0

我还没有尝试过,但我的倾向只是尝试一下——用东亚语言画一些东西并检查结果。你拿到盒子了吗?

编辑:显然有些人没有意识到我的意思是绘制文本然后让代码检查结果。我不是说人类眼球测试!

于 2012-05-19T21:58:16.787 回答