Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;Win32 API相当于CultureInfo.TwoLetterIsLanguageName_C++_Globalization - Fatal编程技术网

C++ C++;Win32 API相当于CultureInfo.TwoLetterIsLanguageName

C++ C++;Win32 API相当于CultureInfo.TwoLetterIsLanguageName,c++,globalization,C++,Globalization,NET框架使得获取不同地区的信息变得容易;Win32 C++ API有点难理解。 Win32中是否有一个等效函数,用于在给定整数区域设置ID的情况下获取两个字母的ISO语言名称 在C#中,我会: 代码需要在XP和更高版本上运行。这是Win API自XP以来不断发展的一个领域。我不认为你会找到一个函数来做这件事,它可以回到XP。我相信.NETFramework有自己的内置表(至少对于Vista之前的版本)。甚至在XP上都不可用,而且这并不能完全满足您的需要,即使它实现了,在XP上也可能不像在新版本

NET框架使得获取不同地区的信息变得容易;Win32 C++ API有点难理解。 Win32中是否有一个等效函数,用于在给定整数区域设置ID的情况下获取两个字母的ISO语言名称

在C#中,我会:


代码需要在XP和更高版本上运行。

这是Win API自XP以来不断发展的一个领域。我不认为你会找到一个函数来做这件事,它可以回到XP。我相信.NETFramework有自己的内置表(至少对于Vista之前的版本)。甚至在XP上都不可用,而且这并不能完全满足您的需要,即使它实现了,在XP上也可能不像在新版本上那样完整


您可能需要包含自己的表。

请参阅函数。您可能会对两个值感兴趣:LOCALE_sabbrevtryname和LOCALE_SABBREVLANGNAME。我在Windows7上做了一个快速测试,两个都返回了3个字符串,尽管ISO3166使用了2个字符。LOCALE_SABBREVLANGNAME文档说明它以2个字符的ISO 3166代码开始,并为子语言添加第三个字符。

感谢Trevor在前面的回复中指导我找到这个答案


用参数打电话。

Trevor,谢谢你的回答-它给了我找到正确解决方案的关键字。显然,这对某些语言很重要,LOCALE_sabbrelavlangname的工作方式与您大多数时候描述的方式相同:使用LOCALE_SISO639LANGNAME参数调用GetLocaleInfo可以得到我想要的结果。嗯,这并没有回答被问到的问题。此选项要求使用三个字母的语言缩写,而不是两个字母的语言缩写。此选项在Windows XP上不可用,仅在Vista及更高版本上可用。Adrian,你在所有方面都不正确。如果您仔细阅读,您会发现Windows NT 4和Win98支持LOCALE_SISO639LANGNAME,并提供两个字符的缩写。LOCALE_SISO639LANGNAME2参数(注意后面的“2”)仅为Vista,并提供3个字母的缩写。请撤消你的否决票,因为这是毫无根据的。这个答案实际上并没有提供一个解决方案,但确实存在。见下面我的答案。
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(1034);
string iso = ci.TwoLetterISOLanguageName;
// iso == "es" now.