我有一个将使用几种不同文化的Web应用程序,其中一个是es-US(西班牙美国)。但是,Windows XP对es-US文化没有任何支持。要解决这个问题,我发现一个应该能够使用CultureAndRegionInfoBuilder。所以,我看着CultureAndRegionInfoBuilder,也做了以下内容:在Windows XP上使用CultureAndRegionInfoBuilder从XML加载文化的问题
在Windows 7机器,我保存了文化ES-美国一个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和registeres的文化融入到系统中,具体如下:
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-我们' 不 支持”
好了,这就是正是为什么我试图从XML加载文化并注册到系统中。
是否有人知道我做错了什么,或者我如何在Windows XP机器上创建es-us文化?
Thanx!
是的,我不认为这是导致问题的原因。在http://www.codeproject.com/KB/books/CustomCultures.aspx找到一些有用的信息。看来,msLocale:textInfoName和ms:LocalesortName不能引用机器不具备的文化。因此,在Windows XP机器上注册一个全功能的es-us文化似乎是不可能的。然而,人们可以尽可能创造类似于es-us文化的习俗文化。 – 2010-10-20 06:53:17
我很肯定它*可以*指的是机器没有的文化,这就是创造新文化的重点。一旦我创造了“火星人”文化,只是为了看看它是否可行,而且它运作良好 – 2010-10-20 07:54:31