Получить валюту из текущей культуры? - PullRequest
50 голосов
/ 04 мая 2010

Есть ли способ динамически получать актуальную информацию из настроек культуры приложений? В основном, если пользователь установил культуру США, я хочу знать, что валюта - доллары, или если он настроен на Великобританию, я хочу фунт стерлингов и т. Д.

Это позволяет мне отправлять эту информацию в PayPal при совершении платежа

Ответы [ 7 ]

79 голосов
/ 04 мая 2010

Используйте свойство RegionInfo.ISOCurrencySymbol. Например:

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

Вывод: "USD"

40 голосов
/ 04 мая 2010

Вы можете получить символ от CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol, но я сомневаюсь, что этого достаточно; вам может потребоваться вести отдельный список для каждой культуры. Или просто позвольте пользователю рассказать, сколько он хочет заплатить (например, он может быть вдали от дома и т. Д., Поэтому культура ПК в каком-то гостиничном лаундже не , что в его кредитах карта)

26 голосов
/ 04 мая 2010

Если у вас есть объект CultureInfo ci, вы можете задать, например,

ci.NumberFormat.CurrencySymbol

Для текущей культуры вы просто сделаете

CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
4 голосов
/ 27 октября 2011
string isoCurrencySymbol = RegionInfo.CurrentRegion.ISOCurrencySymbol;
2 голосов
/ 04 мая 2010

Вы можете в основном использовать класс CultureInfo

CultureInfo ci = new CultureInfo(UICulture);
var symbol = ci.NumberFormat.CurrencySymbol;
1 голос
/ 13 декабря 2010
    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;
                    }
                }
        }
0 голосов
/ 02 июня 2010

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

Вам понадобится RegionInfo.CurrencyNativeName, RegionInfo.CurrencyEnglishName или RegionInfo.ISOCurrencySymbol

...