我有以下代码:
var culture = CultureInfo.CurrentUICulture;
var regionInfo = new RegionInfo(culture.TwoLetterISOLanguageName);
如果CurrenUiCulture
是带有ISOLanguageName的希伯来语,“他”会抛出异常
他不应该与中立文化相对应的地区名称;一个 需要特定的文化名称。
它适用于阿拉伯,西班牙,中国等其他文化......出了什么问题?
答案 0 :(得分:2)
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
它可行,因为它是国家/地区代码。答案 1 :(得分:1)
我认为您需要更具体的内容,例如:
regionInfo = new RegionInfo("en-US")
我不能说希伯来语需要哪个字符串文字,但是,因为我做了一些研究,我甚至找不到希伯来语的缩写“he”...我发现这个列表是有的没有希伯来语,但以色列的“IL”(这是.NET 3.5):
[http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo%28v=VS.90%29.aspx][1]
希望这会对你有所帮助。