RegionInfo在Windows 8.1的应用程序

问题描述:

我有以下代码抛出异常:RegionInfo在Windows 8.1的应用程序

var culture = CultureInfo.CurrentUICulture; 
var regionInfo = new RegionInfo(culture.TwoLetterISOLanguageName); 

如果CurrenUiCulture是希伯来语ISOLanguageName“他”抛出一个异常

该地区的名字,他不应该对应于中性文化;一个 特定的文化名称是必需的。

它适用于其他文化,如阿拉伯,西班牙,中国......有什么不对?

he是一个区域中性培养如图由此代码

new CultureInfo("he").IsNeutralCulture; // true 

RegionInfo,其采用int构造字以不同的方式,我发现更容易理解该异常。

new RegionInfo(new CultureInfo("he").LCID) // Culture ID 13 (0x000D) is a neutral culture; a region cannot be created from it. 

请尝试更具体的文化名称,例如he-il以色列。

new RegionInfo("he-il")不会引发异常。

至于你的其他例子...

  • es既是西班牙语的区域中性语言代码和西班牙(RegionInfo also accepts a country code)国家代码所以这就是为什么它的工作原理
  • ar既是阿拉伯语的地区中立语言代码和阿根廷的国家代码(所以它“工作”,但你不会得到预期的结果)
  • zh是中国区域中立的代码,它不应该工作。虽然如果你尝试cn它工作,因为它是国家代码。
+0

如何将中立文化转换为特定文化?我也有同样的问题。 – 2015-05-21 15:00:06

+0

没有简单的转换。一种中立文化对应于许多具体的文化。 – Vache 2015-05-21 21:26:21

我想你会需要更具体的东西,如:

regionInfo = new RegionInfo("en-US") 

我不能说你将需要为希伯来语言,字符串字面量,但是,我做了一些研究,我甚至不能找到缩写“他”的希伯来语......我发现的是这个名单并没有希伯来文,但“IL”为以色列(它是.NET 3.5):

[http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo%28v=VS.90%29.aspx][1]

希望这有助于你。