繁体   English   中英

使用CultureAndRegionInfoBuilder更新内置的.Net文化

[英]Using CultureAndRegionInfoBuilder to update built-in .Net culture

我正在尝试使用以下方法更改内置的.Net文化fr-CA:

    CultureAndRegionInfoBuilder cib = new CultureAndRegionInfoBuilder("fr-CA", CultureAndRegionModifiers.Replacement);

    try
    {
        Console.WriteLine("Updating " + cib.CultureName);

        cib.NumberFormat.CurrencyGroupSeparator = ",";
        cib.NumberFormat.CurrencyDecimalSeparator = ".";
        cib.NumberFormat.NumberGroupSeparator = ",";
        cib.NumberFormat.NumberDecimalSeparator = ".";

        cib.Register();

        Console.WriteLine("Culture updated.");
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
        Console.ReadKey();
    }

但是,Register()调用失败,并显示“ System.InvalidOperationException:由于自定义区域性'fr-CA'已经存在,'Register'方法失败。”

是否可以更新内置文化? 根据文档( http://msdn.microsoft.com/zh-cn/library/system.globalization.cultureandregioninfobuilder.cultureandregioninfobuilder.aspx ),尽管我可能读错了它,但我似乎只能对其进行更新。

我只需要添加:

CultureAndRegionInfoBuilder.UnRegister("fr-CA");

在Register()之前。

创建现有文化的副本并用新名称(例如“ fr-CACustom”)注册可能会更好。

[请注意,只有具有对计算机的管理权限的用户才能在计算机上注册自定义区域性。]

try
{
    CultureAndRegionInfoBuilder cib = new CultureAndRegionInfoBuilder("fr-CACustom", CultureAndRegionModifiers.None);
    cib.LoadDataFromCultureInfo(new CultureInfo("fr-CA"));
    Console.WriteLine("Creating" + cib.CultureName);

    cib.NumberFormat.CurrencyGroupSeparator = ",";
    cib.NumberFormat.CurrencyDecimalSeparator = ".";
    cib.NumberFormat.NumberGroupSeparator = ",";
    cib.NumberFormat.NumberDecimalSeparator = ".";

    // add some region info also
    cib.LoadDataFromRegionInfo(new RegionInfo("CA"));
    cib.RegionEnglishName = "RegionInfo derived from French-speaking Canada";

    cib.Register();

    Console.WriteLine("New culture created.");
}
catch (Exception e)
{
    Console.WriteLine(e);
    Console.ReadKey();
}

此代码在%WINDIR%\\ Globalization系统目录中注册由区域性名称标识的自定义区域性,其中%WINDIR%是Windows操作系统目录。 这将使自定义区域性可用于其他应用程序。

CultureInfo test = new CultureInfo("fr-CACustom");

[注意:为了能够访问CultureAndRegionInfoBuilder类,您需要引用sysglobl程序集,大多数Visual Studio项目模板中默认都不引用该程序集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM