1

考虑这段代码:

new CultureInfo("sv").TextInfo.CultureName

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

CultureName的文档说

如果 CultureInfo.Name 将中性文化作为其值,则相应的 CultureName 将使用相同语言的任意特定文化作为其值。例如,Name 属性为英语中性文化返回“en”,但相应的 CultureName 属性可能为英语(美国)文化返回“en-US”。

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

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

4

2 回答 2

1

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

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

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

所以我想如果你不提供和区域,它只是根据 ID 取第一个

CultureID = LanguageID + 0x0400

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

于 2013-06-28T15:04:57.937 回答
1

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

于 2013-06-28T22:10:35.140 回答