中立文化的TextInfo - 非中立文化的区域如何确定?

时间:2013-06-28 14:19:01

标签: .net globalization cultureinfo

考虑以下代码:

new CultureInfo("sv").TextInfo.CultureName

返回“sv-SE”。但为什么?为什么不“sv-FI”或其他文化?该地区如何确定?

documentation for CultureName

  

如果CultureInfo.Name具有中性文化作为其值,那么   对应的CultureName具有任意特定的值   使用相同语言的文化。例如,Name属性   返回“en”表示英语中性文化,但相应的   CultureName属性可能会为英语返回“en-US”(United   国家)文化。

目前尚不清楚如何选择该地区。对于“en”,选择的区域是“US”,从而产生了en-US文化。

这似乎是一种自动获取语言“主要”区域的好方法 - 但这真的是它的作用吗?或者选择sv-SE和en-US是完全随机的吗? “可能”这个词似乎过于模糊,无法依赖。

2 个答案:

答案 0 :(得分:1)

查看http://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspx

<。> .Net中的文化有一个ID,其中最后10位定义语言,而其他位定义该区域。

对于英语,语言ID为9,en_US的ID为0x0409 - en_GB为0x0809

所以我想如果你不提供和区域,它只需根据ID

获取第一个
CultureID = LanguageID + 0x0400

同样适用于sv-SE和sv-FI

答案 1 :(得分:1)

语言中性的基础数据映射回给定的特定语言,您可以通过使用中性语言调用System.Globalization.Cultureinfo.CreateSpecificCulture来查找。至于为什么,有一些尝试映射到发言者最多的地区,但它也可能与语言的初始支持有关 - 第一个支持的方言最终成为主要的。无论如何,一旦建立就不会改变。为什么要确定某种语言的主要区域?