![](/img/trans.png)
[英]Using CultureAndRegionInfoBuilder to update built-in .Net culture
[英]Problem with loading culture from XML using CultureAndRegionInfoBuilder on Windows XP
我有一个Web应用程序,它将使用几种不同的文化,其中一种是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文化?
谢谢!
我知道这是一个古老的问题,但是最近我遇到了这个问题并设法解决了这个问题。
事实证明,如果仅使用要导入的语言的名称创建一个临时文化,则可以欺骗CreateFromLdml
方法来加载不存在的文化。 然后,您可以注销临时区域性,然后注册刚刚加载的区域性。
我已经制作了用于导出/导入区域性的简单命令行工具,我们已成功使用该工具添加了一些在Azure上部署新服务器时所需的晦涩的缺失区域性。
如果需要,可以在此处找到源代码和解决方案的更详细说明。
从MSDN :
请注意,只有具有对计算机的管理权限的用户才能在计算机上注册自定义区域性。 因此,典型的应用程序无法创建自定义区域性。
我怀疑这可能是造成您问题的原因...您对此计算机拥有管理员权限吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.