ASP.NET使用语言代码nb(Bokm;l)创建特定的区域性
本文关键字:创建 区域性 #129 NET 语言 代码 Bokm nb ASP | 更新日期: 2023-09-27 18:20:38
我有一个ASP.NET 3.5网站。
为什么我不能为博克马尔语创造一种特定的文化,就像这样:
CultureInfo c = CultureInfo.CreateSpecificCulture("nb");
语言"en"很好用,结果是"en-US"。我以为有了"nb",我也可以做同样的事情,获得文化"nb NO"。但是用"nb"我得到错误:
不支持区域性nb。
我会解释我为什么需要它。
我检索了一个文化列表:"nl-nl"、"nl-BE"、"nb-NO"、"fr-CH"、"fr-fr"我想要的是一个具有默认文化的独特语言列表。因此,我创建了一个具有唯一语言的列表,结果是"nl"、"nb"、"fr"。接下来,我想要特定的文化,但nb不起作用。我之所以想要这个,是因为唯一列表选择了nl BE,而不是默认的nl nl。
但当荷兰语被选中时,我会坚持使用"nl BE",并将这些文化放在一个独特的文化列表中。此列表将产生"nl BE"、"nb NO"、"fr CH"。
您不能假设CultureInfo对象之间的语言名称和父子关系之间存在对应关系。层次结构还取决于Windows版本。
根据NLS API的文档,"nb"区域性存在于Windows 7上,但不存在于Windows Vista上。
在我的Windows7机器上,Bokmål的文化层次结构是,按子级到父级顺序
- nb否
- nb
- 否
- 不变的文化
简而言之,您应该使用CultureInfo对象的Parent属性,而不是进行字符串操作。
我不明白为什么这不起作用。下面这三个名字给了我正确的文化
尝试:
CultureInfo c = CultureInfo.CreateSpecificCulture("nb-NO");
UnitTest:
[Test]
public void CultureTest()
{
var c = CultureInfo.CreateSpecificCulture("nb-NO");
Assert.AreEqual("Norwegian, Bokmål (Norway)",c.DisplayName);
Assert.AreEqual("nb-NO", c.Name);
Assert.AreEqual("norsk, bokmål (Norge)", c.NativeName);
var c2 =
CultureInfo.CreateSpecificCulture("nb");
Assert.AreEqual("Norwegian, Bokmål (Norway)", c2.DisplayName);
Assert.AreEqual("nb-NO", c2.Name);
Assert.AreEqual("norsk, bokmål (Norge)", c2.NativeName);
var c3 =
CultureInfo.CreateSpecificCulture("NO");
Assert.AreEqual("Norwegian, Bokmål (Norway)", c3.DisplayName);
Assert.AreEqual("nb-NO", c3.Name);
Assert.AreEqual("norsk, bokmål (Norge)", c3.NativeName);
}