从当前的文化中获取货币?
有没有办法从应用程序文化设置中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