在Windows XP上使用CultureAndRegionInfoBuilder从XML加载文化的问题

时间:2010-10-19 14:05:08

标签: c# .net culture

我有一个网络应用程序将使用一些不同的文化,其中一个是es-US(西班牙美国)。但是,Windows XP对文化es-US没有任何支持。为了解决这个问题,我发现一个人应该能够使用CultureAndRegionInfoBuilder。所以我查看了Cul​​tureAndRegionInfoBuilder并做了以下事情:

在Windows 7计算机上,我将文化es-US保存到XML文件中,如下所示:

private static void SaveCultureToFile() {
            try {
                CultureAndRegionInfoBuilder cultureAndRegionInfoBuilder = null;
                Console.WriteLine("Saving es-US to xml disc...\n");
                cultureAndRegionInfoBuilder = new CultureAndRegionInfoBuilder("es-US", CultureAndRegionModifiers.Replacement);

                // Populate the new CultureAndRegionInfoBuilder object with culture information.
                CultureInfo ci = new CultureInfo("es-US");
                cultureAndRegionInfoBuilder.LoadDataFromCultureInfo(ci);

                cultureAndRegionInfoBuilder.Save("es-US.xml");

            }

然后我有一个读取xml的函数,并将文化注册到系统中,如下所示:

    private static void RegisterCultureFromDisk() {
        try {
            CultureAndRegionInfoBuilder cultureAndRegionInfoBuilder = null;
            Console.WriteLine("Loading es-US from xml...\n");
            cultureAndRegionInfoBuilder = CultureAndRegionInfoBuilder.CreateFromLdml("es-US.xml");
            Console.WriteLine("Culture is registred to the system...\n");
            cultureAndRegionInfoBuilder.Register();
            Console.WriteLine("The following culture has been registred to the system: \n");

        }

因此,我在Windows 7计算机上使用SaveCultureToFile方法运行程序,从而将文化保存为xml文件。然后我将文件复制到Windows XP计算机,并运行相同的程序,但RegisterCultureFromDisk()方法。但该程序在CultureAndRegionInfoBuilder.CreateFromLdml(“es-US.xml”)方法中失败说:

  

“文化名称'es-us'不是   支持“

嗯,这正是我为什么要尝试从xml加载文化并将其注册到系统中的原因。

有人知道我做错了什么,或者我如何在Windows XP机器上创建es-us文化?

感谢名单!

2 个答案:

答案 0 :(得分:1)

我知道这是一个古老的问题,但我最近遇到了这个问题,并设法实际解决了这个问题。

如果您只是使用要导入的文件的名称创建临时文化,则可以欺骗CreateFromLdml方法加载不存在的文化。然后,您可以取消注册临时文化并注册您刚加载的文化。

我已经为导出/导入文化创建了一个简单的命令行工具,我们已经成功地使用这些工具添加了在Azure上部署新服务器时所需的一些模糊的缺失文化。

如果您需要,可以使用源代码和解决方案的更深入描述here

答案 1 :(得分:0)

From MSDN

  

请注意,只有拥有该计算机管理权限的用户才能在计算机上注册自定义区域性。因此,典型的应用程序无法创建自定义文化。

我怀疑这可能是你问题的原因......你对这台机器有管理权吗?