注册后改变和挽救习俗文化

时间:2012-12-12 18:49:57

标签: asp.net localization globalization cultureinfo

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

1 个答案:

答案 0 :(得分: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();