考虑以下代码:
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是完全随机的吗? “可能”这个词似乎过于模糊,无法依赖。
答案 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来查找。至于为什么,有一些尝试映射到发言者最多的地区,但它也可能与语言的初始支持有关 - 第一个支持的方言最终成为主要的。无论如何,一旦建立就不会改变。为什么要确定某种语言的主要区域?