.NET框架可以轻松获取有关各种语言环境的信息; Win32 C ++ API有点难以理解。
在Win32中是否有等效函数来获取给定整数区域设置ID的双字母ISO语言名称?
在C#中我会这样做:
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(1034);
string iso = ci.TwoLetterISOLanguageName;
// iso == "es" now.
代码需要在XP及更新版本上运行。
答案 0 :(得分:3)
感谢Trevor在早些时候的回复中指导我这个答案。
答案 1 :(得分:1)
请参阅GetLocaleInfo功能。您可能感兴趣的有两个LCType值:LOCALE_SABBREVCTRYNAME和LOCALE_SABBREVLANGNAME。我在Windows 7上进行了快速测试,两者都返回了3个字符串,即使ISO 3166使用2个字符。 LOCALE_SABBREVLANGNAME文档说明它以2个字符的ISO 3166代码开始,并为子语言添加第三个字符。
答案 2 :(得分:0)
这是Win API自XP以来发展很多的一个领域。我不认为你会找到一个功能,可以一直回到XP。我相信.NET框架有自己的内置表(至少对于Vista之前的版本)。 GetUserDefaultLocaleName
甚至不能在XP上使用,并且这并不能完全满足您的需求,即使它确实如此,它在XP上可能也不会像在新版本上那样完整。
您可能需要包含自己的表格。