CultureInfo.CreateSpecificCulture方法如何将中性文化映射到特定文化?

时间:2016-02-02 11:25:36

标签: c# .net localization cultureinfo

我不知道中立文化是如何映射到特定文化的。它是静态的,如下所示吗?

en = en-US    
fr = fr-FR    
pt = pt-BR
我检查了一下 http://referencesource.microsoft.com/#mscorlib/system/globalization/cultureinfo.cs,44db57d9e190258e,references

&安培; 来自https://github.com/dotnet/coreclr/blob/master/src/classlibnative/nls/nlsinfo.cpp

的nativeInitCultureData

但我无法理解。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

我认为这里没有完全映射。

enen-US种文化因其LCID property按顺序0x00090x0409而有所不同。 en是与语言相关但与国家或地区的神经文化。

en-US是一种与两者语言和国家或地区相关联的特定文化。

这就是为什么您可以使用en-US

创建RegionInfo
var region = new RegionInfo("en-US");

但您无法使用en

创建
var region = new RegionInfo("en");

说;

  

区域名称en 应与中性文化相对应;一个   需要特定的文化名称。

CultureInfo个对象之间存在层次结构,特定文化的Parent为中性文化,中性文化的父级为InvariantCulture

让我直观地了解这个层次结构如何适用于en中立文化:

enter image description here

答案 1 :(得分:2)

几乎,文化之间存在父关系。你可以通过以下方式看到这个:

var specificCultures = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures);
foreach (var culture in specificCultures)
{
     var text = "Specific: " + culture.Name + " Parent: " + culture.Parent.Name;
     Console.WriteLine(text);
}

给予(输​​出摘录):

  

具体:ar-SA家长:ar
  具体:bg-BG父母:bg
  具体:ca-ES家长:ca
  具体:zh-TW父母:zh-CHT
  具体:cs-CZ父母:cs
  具体:da-DK家长:da
  具体:de-DE Parent:de
  具体:el-GR家长:el
  具体:en-US Parent:en
  具体:fi-FI家长:fi
  具体:fr-FR父母:fr
  具体:he-IL家长:他

您可以在此代码段中看到zh-TW的父级是zh-CHT。但这最终会降到zh(通过zh-Hant)。跟随特定文化的父母,最终会让你成为一个中立的文化。