为什么突然出现萨米语中的 CultureInfo.DisplayName ?我用它来显示国家名称列表。也许不是一个好主意,但它直到最近才起作用,我很确定它是瑞典语(我想它可能是英语。)
MSDN 说
此属性表示 .NET Framework 版本的本地化名称。例如,如果安装了 .NET Framework 英文版,则该属性会为 en-US 区域性名称返回“English (United States)”。如果安装了 .NET Framework 西班牙语版本,无论系统设置为显示哪种语言,文化名称都以西班牙语显示,并且 en-US 的属性返回“Ingles (Estados Unidos)”。
但我很确定我没有安装 Sami 版本的框架。
我的网络配置有:
<globalization
culture="sv-SE"
uiCulture="sv-SE"/>
补充:代码
public static IEnumerable<KeyValuePair<string, string>> CountryList
{
get
{
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture("sv-SE");
Thread.CurrentThread.CurrentUICulture = new
CultureInfo("sv-SE");
var cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
/*Array.Sort(countries.Select(
x => Regex.Match(x.DisplayName, "\\(([\\w- ]+)\\)").ToString()).ToArray(),
countries);
*/
SortedDictionary<string, CultureInfo> d = new SortedDictionary<string, CultureInfo>();
foreach (CultureInfo cultureInfo in cultures)
{
string key = Regex.Match(cultureInfo.DisplayName, "\\(([\\w- ]+)\\)").ToString();
if (!d.ContainsKey(key))
d.Add(key, cultureInfo);
}
var countries = d
.Where(x => Regex.Match(x.Value.DisplayName, "\\([A-ZÅÄÖ]").Success)
.Select(
x => new KeyValuePair<string, string>(
Regex.Match(x.Value.Name, "-(\\w+)").Groups[1].ToString(),
Regex.Match(x.Value.DisplayName, "\\(([\\w- ]+)\\)").Groups[1].ToString()
));
return countries;
}
}