1

我最近在 ASP.NET 中注册了一些自定义文化,后来我们的客户要求我更改其中一种文化。例如,我注册en-EU了一个毯子“欧盟英语”语言区域,用于欧盟的英语。我被要求将它从欧盟重新标记为欧洲。Iso 代码en-EU将保持原样,但我需要将英文名称和本机名称属性从English (European Union)更改为English (Europe)。我可以在不取消注册并重新注册的情况下执行此操作吗?如果我必须注销并重新注册,我会丢失存储在其中的内容吗?

4

1 回答 1

1

看起来在您再次注册之前,它必须已经取消注册(因为如果自定义文化已经注册, Register会抛出 InvalidOperationException)。

但是,您可以做的是从现有的自定义文化初始化 CultureAndRegionInfoBuilder,然后取消注册(此时您不再需要它),然后进行更改并再次注册。

即像这样:(未经测试的代码)

  // Initalize the CultureAndRegionInfoBuilder with en-EU
  CultureAndRegionInfoBuilder car = new CultureAndRegionInfoBuilder("en-EU", 
                                         CultureAndRegionModifiers.None);
  car.LoadDataFromCultureInfo(CultureInfo.CreateSpecificCulture("en-EU"));
  car.LoadDataFromRegionInfo(new RegionInfo("en-EU"));

  // Unregister it
  CultureAndRegionInfoBuilder.Unregister("en-EU"); 

  // Update it
  car.CultureEnglishName = "English (European Union)";
  car.CultureNativeName = "English (Europe)";

  // Re-register it
  car.Register();
于 2012-12-13T10:13:48.647 回答