我想获得安哥拉文化,以便使用这样的东西:
var cultureInfo = System.Globalization.CultureInfo.GetCultureInfo("pt-PT");
var price = String.Format(cultureInfo, "{0:C}", price);
当用户来自安哥拉时格式化kwanzas的价格,但我不知道,我无法找到使用什么代替"pt-PT"
安哥拉,有没有人有任何想法?
答案 0 :(得分:4)
从我做过的一些研究来看,似乎Windows安装最初并不支持安哥拉文化背景。这一点很重要,因为.NET 本身并没有提供文化设置 - 它会从操作系统上安装的文化中获取设置。
因此,您可以采用以下几种方法:
安装适当的文化作为操作系统的语言包(如果有)。这将使您的应用程序在该计算机上仅。其他计算机或Web服务器托管环境(如果您碰巧创建网站)也必须安装相同的语言包。我认为这种方法有些不可接受,因为它取决于外部先决条件,并涉及运行应用程序的每一方的一些非平凡的工作。因此,我要看一下另一种方法
在您的应用程序中创建自定义文化。从v4.0开始,.NET框架允许您基于现有文化构建自定义文化。这将带来以下好处:
简而言之,如果您想在.NET中创建自定义文化,则需要运行一次,类似于这段代码:
CultureInfo baseCulture = new CultureInfo("pt-PT");
RegionInfo regionInfo = new RegionInfo(baseCulture.Name);
CultureAndRegionInfoBuilder builder =
new CultureAndRegionInfoBuilder("pt-AO",CultureAndRegionModifiers.None);
// load in the data from the existing culture and region
builder.LoadDataFromCultureInfo(baseCulture);
builder.LoadDataFromRegionInfo(regionInfo);
// make custom changes to the culture
builder.CurrencyEnglishName = ...;
builder.CurrencyNativeName = ...;
builder.ISOCurrencySymbol = ...;
builder.Register();
我认为安哥拉文化将非常接近pt-PT
文化,因此我将其作为基础。你可以改变它,但最适合你。您还需要将代码中的...
值替换为适合您文化的值。我不认识他们,所以我将这些留给你。
需要注意的另一件事 - 每个应用程序执行一次上述代码非常重要。否则,如果已注册具有该名称的区域性,builder.Register()
方法可能会抛出异常。这也意味着要避免使用自定义文化的现有文化名称。
您可以查看有关如何制作自定义文化的这些资源: