我有一个网络应用程序将使用一些不同的文化,其中一个是es-US(西班牙美国)。但是,Windows XP对文化es-US没有任何支持。为了解决这个问题,我发现一个人应该能够使用CultureAndRegionInfoBuilder。所以我查看了CultureAndRegionInfoBuilder并做了以下事情:
在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文化?
感谢名单!
答案 0 :(得分:1)
我知道这是一个古老的问题,但我最近遇到了这个问题,并设法实际解决了这个问题。
如果您只是使用要导入的文件的名称创建临时文化,则可以欺骗CreateFromLdml
方法加载不存在的文化。然后,您可以取消注册临时文化并注册您刚加载的文化。
我已经为导出/导入文化创建了一个简单的命令行工具,我们已经成功地使用这些工具添加了在Azure上部署新服务器时所需的一些模糊的缺失文化。
如果您需要,可以使用源代码和解决方案的更深入描述here。
答案 1 :(得分:0)