从当前的文化中获取货币?

有没有办法从应用程序文化设置中dynamic获取当前信息? 基本上如果用户已经把文化设定为美国,我想知道货币是美元,或者如果他们已经设置为英国,我想英镑等等。

这样,我可以在付款时将这些信息发送给PayPal

使用RegionInfo.ISOCurrencySymbol属性。 例如:

var ri = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID); Console.WriteLine(ri.ISOCurrencySymbol); 

输出:“USD”

你可以从CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol得到这个符号 ,但是我怀疑这是不够的。 您可能需要为每种文化保留一个单独的列表。 或者只是让用户告诉你他们想要付出什么(例如,他们可能离开家,等等,所以在一些酒店的rest室PC的文化不是他们的信用卡上)

一旦你有了CultureInfo ci对象,你可以问如

 ci.NumberFormat.CurrencySymbol 

对于目前的文化,你只需要做

 CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol 
 string isoCurrencySymbol = RegionInfo.CurrentRegion.ISOCurrencySymbol; 

你基本上可以使用CultureInfo类

 CultureInfo ci = new CultureInfo(UICulture); var symbol = ci.NumberFormat.CurrencySymbol; 
  public static string GetCurrencySymbol(string currency) { if (currency == null) return ""; if (currency == "") return ""; int i = 0; var regionInfo = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID); foreach (var cultureInfo in CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures)) { if (!cultureInfo.Equals(CultureInfo.InvariantCulture)) { var regionCulture = new RegionInfo(cultureInfo.LCID); if(regionCulture.ISOCurrencySymbol == currency) { //list.Add(regionCulture); regionInfo = regionCulture; } } } 

http://help.outlook.com/en-us/140/system.globalization.regioninfo.currencynativename(VS.85).aspx

您将需要RegionInfo.CurrencyNativeName,RegionInfo.CurrencyEnglishName或RegionInfo.ISOCurrencySymbol