可以在本地开发机器上为en-EN创建文化

时间:2015-12-07 16:27:43

标签: c# .net .net-4.5.2

我刚刚将我们的应用程序部署到我们的azure staging环境中,并遇到了en-EN文化不受支持的问题。经过一番挖掘后,我发现没有这样的文化,我应该使用en-GBen-US代替。

但是,现在我的问题。在我的本地开发机器上,使用CultureInfo创建en-EN时没有任何问题。

CultureInfo ci = new CultureInfo("en-EN"); 
Console.WriteLine("culture: "+ ci.ThreeLetterISOLanguageName);

输出culture: eng

我还尝试使用CultureInfo.GetCultures(CultureTypes.AllCultures);枚举所有文化,结果中没有相应的en-EN文化。

那么,发生了什么,为什么我要创造一种不应该存在的文化呢?

2 个答案:

答案 0 :(得分:0)

如果您使用的是Windows 10,则文化行为已发生变化:"未知",但"可能已存在"文化(3个字母的iso)只会导致" Unkown locale"用LCID 4096培养。 在Windows 10之前,这将导致异常(除非您已经安装了这样的自定义文化)

MSDN-Link

        try
        {


            // ok
            CultureInfo culture1 = new CultureInfo("foo");
            CultureInfo culture2 = new CultureInfo("xyz");
            CultureInfo culture3 = new CultureInfo("en-xy");

            // not ok - exception
            CultureInfo culture4 = new CultureInfo("foox");

        }
        catch (Exception exc)
        {

        }

答案 1 :(得分:0)

正如documentation所述:

  

从在Windows 7或更高版本的.NET Framework 4或更高版本下运行的应用程序开始,该方法尝试从操作系统中检索其标识符为name的CultureInfo对象; 如果操作系统不支持该文化,并且name不是补充或替换文化的名称,则该方法将抛出CultureNotFoundException异常

基本上,您的操作系统有en-EN作为现有文化的替代名称(更可能是en-US),而Azure VM上则没有。{/ p>

解决方案是:使用真实的文化名称(您可以找到here