Ответ 1
Используйте свойство RegionInfo.ISOCurrencySymbol. Например:
var ri = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID);
Console.WriteLine(ri.ISOCurrencySymbol);
Выход: "USD"
Есть ли способ динамически получать текущую информацию из настроек культуры приложений? В принципе, если пользователь установил культуру для США, я хочу знать, что валюта - это доллары, или если они установлены в Великобритании, я хочу фунт стерлингов и т.д. И т.д.
Это значит, что я могу отправить эту информацию в PayPal, когда будет произведен платеж.
Используйте свойство RegionInfo.ISOCurrencySymbol. Например:
var ri = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID);
Console.WriteLine(ri.ISOCurrencySymbol);
Выход: "USD"
Вы можете получить символ от CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
, но я сомневаюсь, что этого достаточно; вам может потребоваться сохранить отдельный список для каждой культуры. Или просто позвольте пользователю рассказать вам, за что они хотят платить (например, они могут быть вдали от дома и т.д., Поэтому культура ПК в каком-то гостиничном лаундже не является тем, что есть на их кредитной карте).
Как только у вас есть объект 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