将LANG32从Win32_OperatingSystem映射到C#CultureInfo

时间:2015-10-08 18:53:30

标签: c# localization

是否可以将LANGIDWin32_OperatingSystem映射到C#CultureInfo。或者更具体地说是Locale中的Win32_OperatingSystem属性?

以下是说明

Locale
Data type: string
Access type: Read-only
Qualifiers: MappingStrings ("Win32API|National Language Support Functions|GetLocaleInfo|LOCALE_ILANGUAGE")
  

操作系统使用的语言标识符。一种语言   identifier是a的标准国际数字缩写   国家/地区。每种语言都有唯一的语言标识符   (LANGID),一个由主要语言组成的16位值   标识符和辅助语言标识符

我认为它会映射到CultureInfo的LCID参数,但之后我在报告中得到了值409,它使CultureInfo.GetCultureInfo(lcid)抛出异常。

那么获得CultureInfo(或其他能给我一个人名而不是语言代码的东西)的正确方法是什么。

1 个答案:

答案 0 :(得分:2)

您需要将字符串解析为十六进制数字:

int lcid;

if (int.TryParse(currentValue, NumberStyles.HexNumber,
    NumberFormatInfo.InvariantInfo, out lcid)) {
  currentValue = CultureInfo.GetCultureInfo(lcid).Name;
}