3

为什么突然出现萨米语中的 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;
        }
    }
4

1 回答 1

0

我假设您的 Window 语言环境设置为smj-sv类似的东西。然后,.NET Framework 将生成一种文化,如中所述

从 Windows 语言环境生成的文化

通常,您的 Web.config 中的值应该覆盖 Windows(用户的)区域设置,但可能不再从您的 Web.config 中获取这些值。您是否检查过该文件没有损坏且有效?

要查看您的 Web.config 是否有问题,我会尝试通过覆盖InitializeCulture此处描述的方法以编程方式设置语言:

如何:设置 ASP.NET 网页全球化的文化和 UI 文化

于 2010-06-02T14:04:49.923 回答